"use strict";
// object & type
//1.基本对象类型===> 入参指定属性和类型
let dataObj = {
    name: 'haha',
    age: 18
};
dataObj = {
    name: 'yiyi',
    age: 20
};
// 2.复杂对象类型
/***
 * data:number[] 数组类型的数字
 * myfunc:(item:number)=>number[] 函数类型传入数字 返回数组类型数值
 */
let complex = {
    data: [1, 2, 3],
    myfunc: function (item) {
        this.data.push(item);
        return this.data;
    }
};
console.log('打印对象中的函数', complex.myfunc(20));
let complex2 = {
    data: [1, 2, 3],
    myfunc: function (item) {
        this.data.push(item);
        return this.data;
    }
};
// ----------------------union type 检查类型 null undefined never
// 1.union type 同时定义多个类型
// number | string | boolean 可以接受这三种类型的值
let unionType = 12;
unionType = '12';
unionType = true;
// 2.检查类型
let checkType = '10';
if (typeof checkType == 'string') {
    console.log('是否为字符串类型', 'string');
}
// 3. null undefined 
let myNull = null;
myNull = undefined; //非严格模式下可以赋 null 和 undefined
// 4. never  
// 4.1 应用场景 抛出异常
function error(message) {
    throw new Error(message);
}
// 4.2 死循环
function loop() {
    while (true) {
    }
}
// 4.3 自执行函数赋值给Number类型
let y;
y = (() => {
    throw new Error('message'); //抛出异常其实就是never类型
})();
